#!/usr/bin/env python
#coding:utf-8
#filename:os2.py
#搜索指定文件中的字符串并进行替换
#参考：http://goo.gl/WKyXz

import os
import string

class MyReplace:
    '''
    替换文本中的指定字符。
    '''
    
    def __init__(self, filename, search_for, replace_with):
        '''
        初始化函数
        '''
        self.filename = filename
        self.search_for = search_for
        self.replace_with = replace_with

    def replace(self):
        '''
        替换文件中的字符。
        '''
        back = os.path.splitext(self.filename)[0] + '.bak'
        temp = os.path.splitext(self.filename)[0] + '.tmp'

        #如果存在.tmp文件则进行删除
        try:
            os.remove(temp)
        except os.error:
            pass

        fi = open(self.filename)
        fo = open(temp, 'w')

        for s in fi.readlines():
            fo.write(string.replace(s, self.search_for, self.replace_with))

        fi.close()
        fo.close()

        #如果存在.bak文件则删除
        try:
            os.remove(back)
        except os.error:
            pass
        #将文件修改成.bak文件
        os.rename(self.filename, back)
        #将临时文件改成原文件名
        os.rename(temp, self.filename)

if __name__ == '__main__':
    file = 'sample.txt'
    r = MyReplace(file, "hello", "tjena")
    r.replace()
    print "第一次替换！"

    b = MyReplace(file, "tjena", "hello")
    b.replace()
    print "第二次替换！"                    
